草庐IT

Python functools.wraps 等价于类

全部标签

c++ - 如何在 C++ 中获得整数类型的无符号等价物?

有没有办法在C++中获得有符号整数类型的无符号等价物(相同大小)?我的思路是:templatestructget_unsigned{};templatestructget_unsigned{typedefunsignedinttype;};...templatevoidmyfunc(Tval){get_unsigned::typeu=std::abs(val);...}我正在标准库或Boost中寻找现有的解决方案,除非只有几行代码,否则我不想自己动手。 最佳答案 Boost.TypeTraits有make_unsigned:type

C++ Java static final 等价物

我正在使用C++编写国际象棋游戏程序。我想为类Board创建两个类属性:ROWS和COLUMNS。在Java中,我会将它们声明为staticfinal,一切都会按我的意愿运行。我如何在C++中做同样的声明?我需要在其他类中通过“Board::ROWS”和“Board::COLUMNS”访问这些属性。我所拥有的是这个,它抛出编译错误,因为ROWS和COLUMNS没有在m_TileMap的声明范围内声明。在不使用#define语句的情况下执行此操作是否有好的做法?classBoard{Tile*m_TileMap[ROWS][COLUMNS];public:staticconstintRO

c++ - std::string 的 strncpy 等价物?

在C++标准库中是否有与strncpy完全相同的?我的意思是一个函数,它将一个字符串从一个缓冲区复制到另一个缓冲区,直到它到达终止符0?例如,当我必须解析来自不安全源(例如TCP数据包)的字符串时,我能够在处理数据的同时执行长度检查。我已经搜索了很多关于这个主题的内容,我也发现了一些有趣的主题,但所有这些人都对std::string::assign感到满意,它也能够将字符大小作为参数进行复制.我对这个函数的问题是,它不执行任何检查是否已经命中终止空值-它会认真对待给定的大小并复制数据,就像memcpy将其复制到字符串的缓冲区中一样.如果在应对时有这样的检查,那么分配和复制的内存比必须完

char* 上 memset 的 C++ 等价物

我有这个代码char*oldname=newchar[strlen(name)+1];memcpy(oldname,name,strlen(name)+1);name=newchar[strlen(oldname)+strlen(r.name)+1];memset(name,'\0',strlen(name));strcat(name,oldname);strcat(name,"");strcat(name,r.name);我明白使用memcpy和memset是不行的,但我还不明白如何在C++中使用它,最好不使用std。有人知道吗?谢谢。 最佳答案

c++ - gnu c++ 中是否有 __if_exists 的等价物?

__if_exists是微软特定的关键字,用于在编译时测试标识符是否存在:msdn:__if_exists它在“伪造的”模板特化方面非常有用,因为在某些情况下,它提供了一种比“真正的”特化或重载等其他方法更简单、可读且性能更好的方法。但现在我必须将一个大项目移植到gnuc++,我想如果我不得不为我使用它的(诚然很少的)场合找到其他方法,我会开始有点哭泣 最佳答案 在我看来,这是一个蹩脚的关键字......不幸的是,据我所知,它不存在于gcc中,但我可能根本不知道它。处理此问题的正确C++方法是通过使用概念,即根据某些要求调整类型上执

java - Eclipse 是否有 "vim: set ft=cpp:"或 "-*- c++ -*-"的等价物?

有时文件中的一些代码没有任何扩展名。此类文件将包含以单一语言编写的代码,但每个此类文件可能使用不同的语言(例如C、C++、汇编语言、wiki标记和HTML)编写。同样,当文件名中有共同的扩展名,但不同的文件使用不同的编程语言时,也会出现此问题。我要解决的问题是避免让每个checkout工作区的开发人员都不必弄清楚源文件是什么类型的文件(没有扩展名,或者扩展名不暗示源文件使用的语言)。为此,文件的作者有责任在文件中加入正确的魔法,以便正确打开文件。由于Eclipse能够根据文件中的某些嵌入文本禁用格式化程序,因此我认为也应该可以指定文件类型。OpenWith功能允许单个开发人员更改文件的

Preon 的 Java 或 C++ 等价物?

Preon是一个用于创建二进制编解码器的Java库:您只需在类的数据成员中放置关于它们与位字段的对应关系的注释(例如,用于特定字段的位数),并且基于此类,该库构建一个Codec对象能够创建类的实例,从二进制输入流中读取数据。由于许可问题(它是在GPL下分发的),我无法使用它。在Java或C++中是否有任何具有等效或相似功能的库? 最佳答案 看着license页面,preon库是“GNU通用公共(public)许可证,版本2,带有类路径异常(exception)”,这很重要。这允许您以二进制形式使用该库,您的应用程序也不是GPL。

c++ - Unix 函数 gmtime_r 的 Windows 等价物是什么?

我正在将一些Unix代码移植到WindowsVisualStudio2010中。我遇到了以下行gmtime_r(&now,&tm_time);我发现gmtime_r()是一个标准的Unix函数,但我希望找到Windows的等效函数。我在time.h中发现了很多gmtime函数,但我很难找到哪个是等价的,如果它存在的话。有人能指出我正确的方向吗? 最佳答案 gmtime_r()是gmtime()的线程安全版本。gmtime()的MSVC实现已经是线程安全的,返回的structtm*分配在线程本地存储中。如果在同一线程上多次调用该函数并

c++ - C++11 中 boost::shared_polymorphic_downcast 的 std 等价物在哪里?

boost::shared_polymorphic_downcast和另一个boost::shared_ptr功能位于我最近使用-std=c++0x在GCC中启用了对C++11的支持.为了避免混淆,我从boost::shared_ptr搬过来了至std::shared_ptr位于#include.但是看起来shared_polymorphic_downcast不是std的一部分命名空间,不包含在#include中.你知道它在哪里吗?我错过了弃用备忘录吗;-) 最佳答案 您需要std::static_pointer_cast或std:

c# - C# 中的 C++ CString 等价物

MFC的CString的C#是什么? 最佳答案 可能是System.String。但为了提供更有用的信息:System.String实例是不可变的。Concatenation/substring/etc实际上会创建新的字符串对象,因此使用字符串实例作为构建输出的缓冲区是一个非常糟糕的主意,以防您打算这样做。将System.String视为constCString。System.Text.StringBuilder用于构建和操作字符串内容。它有一个.ToString()方法,您可以调用它来将其内容转换为正确的字符串。您可以使用char